import numpy as np
import pandas as pd

# 二维数组（表格数据结构） index行索引标签，columns列索引标签

df1 = pd.DataFrame(data=np.random.randn(2, 3))  # np.random.randn 标准正态分布
"""
          0         1         2
0  0.713358  1.112883 -0.904678
1 -1.181240 -1.218088  0.520313
"""
print(df1)

data = np.random.randint(40, 100, (10, 5))
subjects = ["语文", "数学", "英语", "政治", "体育"]
stu = ["同学" + str(i) for i in range(data.shape[0])]
df3 = pd.DataFrame(data=data, columns=subjects, index=stu)
print(df3)
"""
     语文  数学  英语  政治  体育
同学0  55  48  67  60  62
同学1  57  78  74  59  75
同学2  95  54  73  52  60
同学3  72  49  99  48  64
同学4  70  51  65  78  40
同学5  89  50  43  59  41
同学6  45  62  78  60  63
同学7  79  80  98  67  68
同学8  77  73  67  68  54
同学9  50  81  76  47  63
"""

df3.shape
df3.index
df3.columns
df3.values
"""
array([[98, 85, 84, 93, 83],
       [73, 68, 64, 47, 87],
       [91, 58, 86, 92, 46],
       [62, 86, 99, 75, 66],
       [49, 73, 46, 61, 81],
       [43, 96, 47, 65, 90],
       [98, 84, 60, 73, 54],
       [59, 93, 58, 83, 43],
       [62, 66, 51, 88, 89],
       [66, 60, 63, 57, 51]])
"""
df3.T
"""
同学0	同学1	同学2	同学3	同学4	同学5	同学6	同学7	同学8	同学9
语文	98	73	91	62	49	43	98	59	62	66
数学	85	68	58	86	73	96	84	93	66	60
英语	84	64	86	99	46	47	60	58	51	63
政治	93	47	92	75	61	65	73	83	88	57
体育	83	87	46	66	81	90	54	43	89	51
"""
df3.head(5)  # 取前5行数据
df3.tail(3)  # 取后三行数据

# 重设索引，只能整体重新设置不能进行局部更改
df3.index = ["同学_" + str(i) for i in range(df3.shape[0])]

# 重置索引，将索引置为0，1，2，3...
df4 = df3.reset_index(drop=False)
"""
  index  语文  数学  英语  政治  体育
0  同学_0  64  65  50  96  75
1  同学_1  52  69  89  45  71
2  同学_2  81  87  47  48  70
3  同学_3  91  84  96  83  69
4  同学_4  57  49  72  48  67
5  同学_5  63  99  70  58  90
6  同学_6  56  78  49  78  83
7  同学_7  75  69  99  84  62
8  同学_8  90  76  94  58  92
9  同学_9  58  70  56  47  56
"""
print(df4)

df5 = df3.reset_index(drop=True)
"""
   语文  数学  英语  政治  体育
0  78  49  83  73  81
1  92  50  52  71  82
2  66  79  96  84  90
3  55  61  80  93  87
4  79  70  70  86  83
5  80  96  55  75  54
6  58  64  71  74  65
7  63  68  66  70  41
8  98  45  82  54  85
9  42  92  59  83  61
"""
print(df5)

df6 = pd.DataFrame({'month': [1, 4, 7, 10],
                    'year': [2012, 2014, 2013, 2014],
                    'sale': [55, 40, 84, 31]})
"""

  month	 sale year
0	1	55	2012
1	4	40	2014
2	7	84	2013
3	10	31	2014
"""
print(df6)

# 将某列设为索引
df7 = df6.set_index("month")
"""
       year  sale
month            
1      2012    55
4      2014    40
7      2013    84
10     2014    31

"""
print(df7)

# 将多列设为索引
df8 = df6.set_index(["year", "month"])
"""

                 sale
year	month	
2012	1	    55
2014	4	    40
2013	7	    84
2014	10	    31
"""
print(df8)
